home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Benchmarks / mumath.pl < prev    next >
Encoding:
Text File  |  1989-04-14  |  825 b   |  45 lines

  1.  
  2. /* Copyright (C) 1988, 1989 Herve' Touati, Aquarius Project, UC Berkeley */
  3.  
  4.  
  5. %  Hofstader's mu math (mutest) proving muiiu
  6. %    from Godel Escher Bach
  7.  
  8. main :- theorem(5,[m,u,i,i,u]).
  9.  
  10. rules(S, R) :- rule3(S,R).
  11. rules(S, R) :- rule4(S,R).
  12. rules(S, R) :- rule1(S,R).
  13. rules(S, R) :- rule2(S,R).
  14.  
  15. rule1(S,R) :-
  16.     append(X, [i], S),
  17.     append(X, [i,u], R).
  18.  
  19. rule2([m | T], [m | R]) :- append(T, T, R).
  20.  
  21. rule3([], -) :- fail.
  22. rule3(R, T) :-
  23.     append([i,i,i], S, R),
  24.     append([u], S, T).
  25. rule3([H | T], [H | R]) :- rule3(T, R).
  26.  
  27. rule4([], -) :- fail.
  28. rule4(R, T) :- append([u, u], T, R).
  29. rule4([H | T], [H | R]) :- rule4(T, R).
  30.  
  31. theorem(Depth, [m, i]).
  32. theorem(Depth, []) :- fail.
  33.  
  34. theorem(Depth, R) :-
  35.     Depth > 0,
  36.     D is Depth - 1,
  37.     theorem(D, S),
  38.     rules(S, R).
  39.  
  40. append([], X, X).
  41. append([A | B], X, [A | B1]) :-
  42.     !,
  43.     append(B, X, B1).
  44.  
  45.